//进行axios二次封装：使用请求与响应拦截器
import axios from 'axios'

import {ElMessage} from 'element-plus'

//利用axios的create方法去创建axios实例，如其他配置：基础路径，超时时间
let request = axios.create({
  //基础路径
  baseURL:import.meta.env.VITE_APP_BASE_API,
  timeout:5000, //超时时间
});
//配置请求拦截器
request.interceptors.request.use((config)=>{
  //config配置对象，headers属性请求头，经常给服务器端携带公共参数
  //返回配置对象
  return config
})

//三 配置响应拦截器
request.interceptors.response.use((respond)=>{
  //成功回调
  //简化数据
  return respond.data
},(error)=>{

  //失败回调：处理http网络错误
  //定义一个变量，存储网络信息
        let message = '';
        //http状态码
        let status=error.response.status
        switch (status){
          case 401:
            message='TOKEN过期'
            break;
          case 403:
            message='无权访问'
            break;
          default:
            message='网络出现问题'
            break;

  }
  //提示错误信息
  ElMessage({
    type:'error',
    message
  });
  return Promise.reject(error)

})

//对外暴露
export default request;
